/**
 * Created by LinJe on 2015/9/21.
 * 处理首页的抓取和发布数据
 */
(function( $ ) {

    var publishServer = {

        //数据浅拷贝
        'extend': function( defs, settings ) {
            for ( var attr in defs ) {
                if ( typeof settings[attr] != 'undefined' ) {
                    defs[attr] = settings[attr];
                }
            }
        },


        /**
         * common() 公共方法
         * @param settings
         * settings.type 默认值'POST', 请求的类型
         * settings.dataType 数据类型
         * settings.url 请求数据的地址
         * settings.data 要发送的数据
         * settings.callBack 请求之后的回调函数
         * 回调函数参数 msg 的数据格式如下：
         * {
         *      'data': msg, //成功提交之后返回的数据
         *      'status': 1, //0代表提交失败，1代表提交成功
         *      'error': '失败信息' //提交失败的信息提示
        }
         */
        'common': function( settings ) {
            //设置默认值
            var defs = {
                'type': 'POST',
                'dataType': 'json',
                'url': '',
                'data': {},
                'callBack': function(){}
            };

            //覆盖数据
            this.extend(defs, settings);

            //经过ajax处理表单数据之后返回结果
            $.ajax({
                type: defs.type,
                dataType: defs.dataType,
                url: defs.url,
                data: defs.data,
                success: function (msg) {
                    defs.callBack && defs.callBack(msg);
                },
                error: function(msg) {
                    defs.callBack && defs.callBack({'error':true, 'description':'服务器异常', 'data':msg});
                }
            });
        },


        //抓取数据
        'drabData': function( settings, callBack ) {
            //异步请求的示例

             this.common({
             'type': 'POST',
             'dataType': 'json',
             'url': '/product/beginFetch',
             'data': {
             'url': settings.url //需要抓取数据的url
             },
             'callBack': callBack
             });

            /*
            ////////////////////////////以下是前端测试效果用////////////////////////////
            //期望返回的json数据格式如下
            var data = {
                "status": "success", //失败状态有 success，error
                "error": "请求失败", //如果是error 则返回对应信息显示到弹框中
                "data": {
                    "pics": {
                        "id": 5, //图片ID
                        "url": "http://ww1.sinaimg.cn/thumbnail/678957begw1ex8ok84ztvj20xc18gwoy.jpg" //图片地址
                    },
                    "productName": "商品名称",
                    "productId": 123,//商品ID
                    "percent": "100%"//运算类型
                }
            };

            callBack && callBack(data);
            */
            ////////////////////////////以上是前端测试效果用////////////////////////////
        },


        //发布微博提交数据
        'publishData': function( settings, callBack ) {
            //异步请求示例参考上面
            ///....///
            ///....///

            this.common({
                'type': 'POST',
                'dataType': 'json',
                'url': '/product/publishWeiBo',
                'data': {
                     //需要抓取数据的url
                    'picId':settings.picId,
                    'productId':settings.productId
                },
                'callBack': callBack
            });


            ////////////////////////////以下是前端测试效果用////////////////////////////
            //期望返回的json数据格式如下
            //微博数据
            /*
            var data = {
                "code": 200, //状态200成功，201状态失败
                "description": "sucess",//状态的描述
                "detail": {
                    "status": "1",// 1为成功创建，2为已存在未更新
                    "productUrl": "http://www.5icool.org/a/201005/427.html"//对应商品url
                }
            };

            callBack && callBack(data);
            */
            ////////////////////////////以上是前端测试效果用////////////////////////////
        },


        //获取商品数据
        'getProductData': function( settings, callBack ) {

            this.common({
                'type': 'POST',
                'dataType': 'json',
                'url': '/productComment/findDynamic',
                'data': {
                    //需要抓取数据的url
                    'pageStep':settings.pageStep,
                    'count':settings.count,
                    'userId':settings.userId
                },
                'callBack': callBack
            });


            ///////////////////////////以下是前端测试效果用////////////////////////////
            //期望返回的json数据格式如下
            //微博数据
            /*
            var data = {
                "code": 200, //状态200成功，201状态失败
                "description": "sucess",//状态的描述
                "detail": {
                    "totalSize": 3, //总页数，总页数是根据请求回来的每条值给的，需要预先算好，如果在调整的时候
                    "dynamicModules": [
                        {
                            "time": "7分钟前",
                            "userAvatar": "http://static.sporttery.cn/images/130517/18-13051G32G3-52.jpg",//用户头像
                            "userName": "菠萝也结衣",
                            "userUrl": "https://www.baidu.com/",  //用户对应的url
                            "typeDescription": "# 添加了摘抄", //描述类型 # 爬取了一个新商品 # 添加了讨论 # 添加了摘抄 # 添加了购买渠道
                            "url": "http://www.zhihu.com/question/22334642#answer-3639267", //如果是摘抄  所带的url
                            "urlDescription": "[来源]", //如果是摘抄  所带的url描述
                            "comment": "在我的想象中，GR2的对焦系统如果能达到A6000的水平，加个五轴防抖，加个翻转屏，简直是完美的，然而，这一次GR2的升级却选择了挤牙膏，这让人无比的绝望，与其花费五千多元买一个与自己拥有的相机无异的“新”相机，不如顺势趁着老α7降价的大气候，体验全幅吧。",
                            "prodPicUrl": "../img/temp/8080.jpg", //商品图片
                            "prodTitle": "Motorola Moto 360 - Black Leather Smart Watch",//商品标题
                            "prodUrl": "http://www.amazon.com/dp/B00007FXDL/" //商品在我们网站内部所处的url
                        },
                        {
                            "time": "7分钟前",
                            "userAvatar": "http://www.qqpk.cn/Article/UploadFiles/201411/20141116135722282.jpg",
                            "userName": "锄禾日当午汗滴禾下土，日照香炉升紫嫣",
                            "userUrl": "https://www.baidu.com/",
                            "typeDescription": "# 爬取了一个新商品",
                            "comment": "在我的想象中，GR2的对焦系统如果能达到A6000的水平，加个五轴防抖，加个翻转屏，简直是完美的，然而，这一次GR2的升级却选择了挤牙膏，这让人无比的绝望，与其花费五千多元买一个与自己拥有的相机无异的“新”相机，不如顺势趁着老α7降价的大气候，体验全幅吧。在我的想象中，GR2的对焦系统如果能达到A6000的水平，加个五轴防抖，加个翻转屏，简直是完美的，然而，这一次GR2的升级却选择了挤牙膏，这让人无比的绝望，与其花费五千多元买一个与自己拥有的相机无异的“新”相机，不如顺势趁着老α7降价的大气候，体验全幅吧。",
                            "prodPicUrl": "http://ecx.images-amazon.com/images/I/81aFIfmjHUL._SL1500_.jpg",
                            "prodTitle": "All Times Finest Transparent Spiral Slicer Ultimate Bundle (2 Different Protective Caps, Cleaning Brush, Ebook). Two Sizes: 1 Julienne Size and One Cut Slicer!",
                            "prodUrl": "http://www.amazon.com/dp/B00JXLJFYO"
                        }
                    ]
                }
            };

            callBack && callBack(data);
            */
            ////////////////////////////以上是前端测试效果用////////////////////////////
        }

    };

    window.publishServer = publishServer;

})( jQuery );